package com.zs.common.model.common;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.google.common.collect.Lists;
import com.mzt.logapi.beans.LogRecord;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.BeanUtils;

import java.util.Date;
import java.util.List;

/**
 * Copyright 2022 ZS Network Co., Ltd. All rights reserved.
 * 本文件仅限于正数网络技术有限公司内部传阅，禁止外泄以及用于其他的商业目的。
 * Created by 张晓珂 on 2022/3/23.
 *
 * @description:
 */
@Getter
@Setter
@TableName("sys_log_record")
public class LogRecordEntity {

    /**
     * id
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 租户（日志租户，非用户中心的租户）
     */
    private String tenant;

    /**
     * 操作日志类型
     */
    private String type;
    /**
     * 日志子类型
     */
    private String subType;

    /**
     * 业务id
     */
    private String bizNo;
    /**
     * 操作人
     */
    private String operator;

    /**
     * 日志内容
     */
    private String action;
    /**
     * 记录是否是操作失败的日志
     */
    private boolean fail;
    /**
     * 日志的创建时间
     */
    private Date createTime;
    /**
     * 日志的额外信息
     */
    private String extra;

    public static LogRecordEntity from(LogRecord logRecord) {
        LogRecordEntity logRecordPO = new LogRecordEntity();
        BeanUtils.copyProperties(logRecord, logRecordPO);
        return logRecordPO;
    }

    public static List<LogRecord> from(List<LogRecordEntity> logRecordPOS) {
        List<LogRecord> ret = Lists.newArrayListWithCapacity(logRecordPOS.size());
        for (LogRecordEntity logRecordPO : logRecordPOS) {
            ret.add(toLogRecord(logRecordPO));
        }
        return ret;
    }

    private static LogRecord toLogRecord(LogRecordEntity logRecordPO) {
        LogRecord logRecord = new LogRecord();
        BeanUtils.copyProperties(logRecordPO, logRecord);
        return logRecord;
    }
}
